package cn.zhfeat.hatch.web.service;

import cn.zhfeat.core.base.BaseResultModel;
import cn.zhfeat.hatch.dto.store.BaseStoreToUserDto;
import cn.zhfeat.hatch.dto.sysuser.SysUserDto;
import cn.zhfeat.hatch.entity.sysuser.SysUser;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * @description: 账号管理接口实现层,业务服务消费层
 * 	原名：SpsAccountService
 *
 * @author Yangcl
 * @date 2018年5月16日 上午10:47:10
 * @version 1.0.0.1
 */
public interface IAccountService {

	/**
	 * @description: 新建名片-弹框列表|分页
	 *		原方法名：getUserAllByNameOrPhone
	 *
	 * @param dto
	 *
	 * @author Yangcl
	 * @date 2018年5月16日 上午10:03:55
	 * @version 1.0.0.1
	 */
	public BaseResultModel ajaxAccountDialogUserList(SysUserDto dto);

	/**
	 * @description: 根据user id 定位一条记录
	 *
	 * @param dto
	 * @author Yangcl
	 * @date 2018年5月17日 下午8:06:51
	 * @version 1.0.0.1
	 */
	public Object ajaxFindUserInfoById(SysUserDto dto);
	/**
	 * @description: 根据门店id获取门店下所有用户的信息
	 *				原方法名：getUsersByStoreId
	 * @param dto
	 * @return
	 * @author MaJie
	 * @date 2018年5月19日 下午4:13:42
	 * @version 1.0.0.1
	 */
	public BaseResultModel findUsersByStoreId(BaseStoreToUserDto dto);

	/**
	 * @description: 根据条件查询用户信息
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月20日 下午3:26:07
	 * @version 1.0.0.1
	 */
	public SysUser findUserInfoBydto(SysUserDto dto);

	/**
	 *
	 * @Description: 更改用户协议状态
	 *
	 * @author: ligang
	 * @date:   2018年5月24日 下午3:07:58
	 * @version 1.0.0.1
	 */
	public BaseResultModel ajaxUpdateAgreement();

	/**
	 * @description: 根据部门id，查询该部门对应的全部用户信息
	 * 需要返回的数据有：
	 * (用户角色按逗号分隔，用户手机号，用户姓名，用户业务身份按逗号分隔)
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月24日 下午2:21:12
	 * @version 1.0.0.1
	 */
	public Object ajaxSelectUserByDepartment(SysUserDto dto);

	/**
	 * @description: 根据用户名和手机号模糊查询全部用户信息，按部门分类
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月25日 下午5:44:48
	 * @version 1.0.0.1
	 */
	public Object ajaxSelectUserByKeyWord(SysUserDto dto);

	/**
	 * @description: 根据状态操作用户 0启用 1停用 2删除
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月26日 上午11:53:01
	 * @version 1.0.0.1
	 */
	public Object ajaxOptionUser(SysUserDto dto);

	/**
	 * @description: 去数据库为一组用户绑定一组角色
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月26日 下午5:15:09
	 * @version 1.0.0.1
	 */
	public Object ajaxCreateUserRolesGroup(SysUserDto dto);

	/**
	 * @description: 重新赋予CRM角色
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月26日 下午5:15:09
	 * @version 1.0.0.1
	 */
	public Object ajaxCreateUserRolesGroupForCrm(SysUserDto dto);

	/**
	 * @description: 创建用户及用户绑定的相关信息
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月27日 上午8:10:47
	 * @version 1.0.0.1
	 */
	public Object ajaxCreateUser(SysUser entity);


	/**
	 * @description: 初始化用户数据，用于编辑员工模块回显数据
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月27日 上午11:19:10
	 * @version 1.0.0.1
	 */
	public Object ajaxSeleUserInfoForUpdate(SysUserDto dto);


	/**
	 * @description: 编辑 用户信息
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月27日 下午1:39:51
	 * @version 1.0.0.1
	 */
	public Object ajaxUpdateUser(SysUser entity);


	/**
	 * @description: 根据条件定位一个一条记录，判断用户是否存在使用
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月28日 下午12:40:46
	 * @version 1.0.0.1
	 */
	public Object ajaxUserInfoByRecoverPwd(SysUserDto dto,HttpServletResponse response);


	/**
	 * @description: 找回密码使用
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月28日 下午6:23:08
	 * @version 1.0.0.1
	 */
	public Object ajaxRetrievePwd(SysUserDto dto, HttpServletRequest request);


	/**
	 * @description: 重置密码
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月29日 下午3:35:53
	 * @version 1.0.0.1
	 */
	public Object ajaxResetPassword(SysUserDto dto);


	/**
	 * @description: 首次登陆展示用户基础信息
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月29日 下午9:46:53
	 * @version 1.0.0.1
	 */
	public Object ajaxPerInforShow(SysUserDto dto);


	/**
	 * @description: 首次登陆更新用户基础信息
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月30日 上午9:51:15
	 * @version 1.0.0.1
	 */
	public Object ajaxPerInforUpdate(SysUser entity);


	/**
	 * @description: 初始化企业超级管理员账号
	 * 注：
	 * 1、企业需要在company_info按顺序手动构建，对应的库由cid进行匹配，如cid = 1 对应 cgroup_00001库
	 * 2、初始化客户用户之前要确保对应的客户库结构一致，冗余数据清空
	 *
	 * 所需参数：
	 * cid - 企业id
	 * account - 客户手机号
	 * name - 客户名称
	 * smsNum - 短信充值数量
	 * pwd - 客户密码
	 *
	 * 请求示例：/account/initCustomerAccount?xxx=xxx&xxx=xxx
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年6月2日 上午10:53:21
	 * @version 1.0.0.1
	 */
	public Object initCustomerAccount(SysUserDto dto);

	/**
	 * @description: 手机页面重置密码
	 *
	 * @param dto
	 * @author Yangcl
	 * @date 2018年6月4日 下午8:06:40
	 * @version 1.0.0.1
	 */
	public BaseResultModel ajaxClientResetPassword(SysUserDto dto);


	/**
	 * @description: 弹框列表|分页,表格形式，上面的方法是选项卡形式
	 *
	 * @param
	 * @author ZhangHao
	 * @date 2018/8/2 13:29
	 * @version 1.0.0.1
	 * @return java.lang.Object
	 */

	Object ajaxAccountTableUserList(String param);


	/**
	 * @description: 账号开通服务使用，增加可以选择权限范围，创建企业的功能
	 *
	 * @param
	 * @author ZhangHao
	 * @date 2018/10/23 14:36
	 * @version 1.0.0.1
	 * @return java.lang.Object
	 */
	Object initCustomerAccountService(SysUserDto dto);


	/**
	 * @description: 根据手机号展示或隐藏客户CRM权限
	 *
	 * @param
	 * @author ZhangHao
	 * @date 2018/10/23 17:25
	 * @version 1.0.0.1
	 * @return java.lang.Object
	 */
	Object showAndHideCrmMenu(SysUserDto dto);


	/**
	 * @description: 查询账号创建手机号是否重复
	 *
	 * @param
	 * @author ZhangHao
	 * @date 2018/10/24 14:32
	 * @version 1.0.0.1
	 * @return java.lang.Object
	 */

	Object getAccountIfRepeat(SysUserDto dto);
}
 




































